# -*- coding: utf-8 -*-
# @Time    : 2023/9/19 15:07
# @Author  : chenyinhua
# @File    : common_page.py
# @Software: PyCharm
# @Desc:

# 标准库导入
# 第三方库导入
import allure
# 本地应用/模块导入
from utils.ui_utils.base_page import BasePage


class CommonPage(BasePage):

    @allure.step("进入页面：{url}")
    def open_site(self, url):
        """
        访问指定的页面
        """
        self.visit(url)

    @allure.step("点击导航栏右上角的【新建】图标")
    def click_new_icon(self):
        """
        点击导航栏右上角的新建图标
        """
        self.click(locator="xpath=//i[contains(@class, 'icon-sousuo')]/following-sibling::img")

    @allure.step("点击新建图标下的【新建项目】按钮，进入新建项目页面")
    def click_new_project_button(self):
        """
        点击新建图标下的新建项目按钮，进入新建项目页面
        """
        self.click(locator="xpath=//a[text()='新建项目']")

    @allure.step("点击导航栏右上角的【登录】按钮，进入登录页面")
    def click_login_button_on_nav(self):
        """
        点击导航栏右上角的登录按钮，进入登录页面
        """
        self.click(locator="xpath=//a[text()='登录']")

    @allure.step("点击【确定】按钮")
    def click_confirm_button(self):
        """
        点击"确定”按钮
        """
        self.click("xpath=//a[text()='确定']")
        self.page.wait_for_timeout(3000)

    @allure.step("点击【是】按钮")
    def click_yes_button(self):
        """
         点击"是”按钮
        """
        self.click("//span[text()='是']")
        self.page.wait_for_timeout(3000)

    @allure.step("点击【确认删除】按钮")
    def click_confirm_delete_button(self):
        """
         点击'确认删除'按钮
        """
        self.click("//span[text()='确认删除']/parent::button")
        self.page.wait_for_timeout(3000)

    @allure.step("断言 --> 弹窗弹出：您的账号尚未绑定手机号码")
    def assert_unbind_phone_popup_show(self):
        """
        弹窗出现：您的账号尚未绑定手机号码
        """
        self.is_element_visible(locator="//div[@id='rcDialogTitle0' and contains(text(), '手机号码')]")

    def click_x_button_on_popup(self):
        """
        在弹窗中点击右上角的x按钮
        """
        self.click("//span[@class='ant-modal-close-x']")

    @allure.step("断言 --> 右侧弹窗提示：{text}")
    def assert_right_top_success_text_show(self, text):
        """
        顶部右侧弹窗提示出现，例如：
            疑修创建成功，提示： 任务创建成功！
            疑修更新成功，提示： 疑修更新成功！
            疑修删除成功，提示： 疑修删除成功！
        """
        self.contain_text(locator="xpath=//div[@class='ant-notification-notice-description']", text=text)

    @allure.step("断言 --> 页面路由， 预期结果：{url}")
    def assert_current_url(self, url):
        """
        检查页面路由，接受一个字符串参数或正则表达式参数
        """
        self.have_url(url)

    @allure.step("断言 --> 网页标题， 预期结果：{text}")
    def assert_page_title(self, text):
        """
        检查网页标题，接受一个字符串参数或正则表达式参数
        """
        self.have_title(text)

    @allure.step("断言 --> 登录成功后，获取用户的login， 预期结果：{login}")
    def check_login(self, login):
        """
        登录成功后，获取用户的login
        """
        self.is_element_attr_have_value(locator="xpath=//a[@class='ant-dropdown-trigger']", attr_name="href",
                                        value=login)
